메인 콘텐츠로 이동하기
  1. 블로그 글/

파이썬 - 시퀀스 자료형

·3 분

본 글은 파이썬에서 값이 연속적으로 이어져 있는 자료형인 시퀀스 자료형(sequence types)을 설명하기 위해 작성되었습니다.

시퀀스 자료형이란? #

시퀀스 자료형(sequence types)이란 값이 연속적으로 이어져 있는 자료형을 말합니다.

시퀀스 자료형은 공통적인 동작과 기능을 제공한다는 점이 가장 큰 특징이라고 할 수 있습니다.

리스트 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
튜플 (1, 2, 3, 4, 5) (1, 2, 3, 4, 5)
range range(5) 0, 1, 2, 3, 4
문자열 ‘Hello’ H e l l o

위와 같이 시퀀스 자료형에는 리스트, 튜플, range, 문자열이 있으며, (bytes, bytearray) 또한 이에 해당됩니다.

시퀀스 자료형으로 만든 객체를 시퀀스 객체라고 하며, 객체 각각의 값을 요소(element)라고 합니다.

시퀀스 객체 내 특정 값 확인 #

시퀀스 객체 내에 특정한 값이 있는지 확인하기 위해서는 하기와 같이 in이나 not in을 사용할 수 있습니다.

>>> a = "Hello"
>>> "H" in a
True
>>> "A" in a
False
# not in 특정 값이 없는지 확인
>>> "ell" not in a
False
>>> "Python" not in a
True

in 연산자를 사용했을 때 특정한 값이 있으면 True, 없으면 False가 나오고 반대로 not in 연산자를 사용했을 때 특정한 값이 없으면 True, 있으면 False가 나옵니다.

시퀀스 객체 연결 #

시퀀스 객체는 + 연산자를 사용하여 연결할 수 있습니다.

>>> a = [0, 1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b 
[0, 1, 2, 3, 4, 5, 6]

단, range는 + 연산자로 객체 연결할 수 없습니다.

>>> range(0, 5) + range(5, 10)
TypeError Traceback (most recent call last)
<ipython-input-7-88e74efcb3c0> in <cell line: 1>()
----> 1 range(0, 5) + range(5, 10)
TypeError: unsupported operand type(s) for +: 'range' and 'range'

따라서, range를 튜플이나 리스트로 변환하여 연결하는 것이 가능합니다. 

>>> tuple(range(0, 5)) + tuple(range(5, 10))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> list(range(0, 5)) + list(range(5, 10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

시퀀스 객체 반복 #

시퀀스 객체는 * 연산자를 사용하여 반복할 수 있습니다.

정수 * 시퀀스 객체 또는 시퀀스 * 정수로 반복 가능합니다.

>>> [0, 1, 2, 3] * 3
[0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]

그러나, 시퀀스 객체 연결 방법과 마찬가지로 ranges는 * 연산자를 사용하여 반복할 수 없습니다.

>>> range(0,10) * 3
TypeError Traceback (most recent call last)
<ipython-input-11-824dcf3cff8f> in <cell line: 1>()
----> 1 range(0,10) * 3
TypeError: unsupported operand type(s) for *: 'range' and 'int'

따라서, 튜플이나 리스트로 변환하여 반복이 가능합니다.

시퀀스 객체 요소 개수 확인 #

시퀀스 객체의 요소 개수는 len 함수를 사용하여 확인이 가능합니다.

# 리스트
>>> a = [1, 2, 3, 4, 5]
>>> len(a)
5
# 튜플
>>> b = (6, 7, 8, 9, 10)
>>> len(b)
5
# range
len(range(0, 5, 2)) # -> 0에서 5까지 2씩 증가하여 0, 2, 4 
3
# 문자열
>>> c = "Hello, World"
>>> len(c)
12